#ifndef AST_DECLARATIONS_ABSTRACT_DECLARATOR_H
#define AST_DECLARATIONS_ABSTRACT_DECLARATOR_H

#include "../ASTNode.h"
class Pointer;
class DirectAbstractDeclarator;

/*
C99   6.7.6
abstract-declarator:
		pointer
		pointer(opt)   direct-abstract-declarator
*/
class AbstractDeclarator : public ASTNode
{
protected:
	AbstractDeclarator(void)
		: ASTNode(ASTNode::abstract_declarator){};

public:
	AbstractDeclarator(Pointer *pPointer, DirectAbstractDeclarator *pDecl = NULL)
		: ASTNode(ASTNode::abstract_declarator)
		, m_pPointer(pPointer)
		, m_pDecl(pDecl){};


	virtual ~AbstractDeclarator(void);

	virtual void					codeGen();

protected:
	Pointer *						m_pPointer; //may be NULL
	DirectAbstractDeclarator *		m_pDecl; //may be NULL
};

#endif

